Repository navigation
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #6354 +/- ##
========================================
Coverage 84.45% 84.45%
========================================
Files 357 357
Lines 38652 38652
Branches 10948 10834 -114
========================================
Hits 32643 32643
Misses 5579 5579
Partials 430 430 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
mstange
force-pushed
the
push-yrnpkqqwltur
branch
from
October 8, 2026 19:48
6dffec8 to
bc43c93
Compare
TypeScript 7 is the native Go port of the compiler. It ships only the
`tsc` binary: the JavaScript compiler API is gone until 7.1, and
typescript-eslint refuses to load against it. That makes the two halves
of this change a single step rather than two.
Timings on this machine, from a cold cache:
yarn ts 4.83s -> 1.04s
yarn lint-js 11.00s -> 1.93s
yarn lint 14.03s -> 2.98s
Only oxlint runs. `.oxlintrc.json` is derived from the effective
configuration of the eslint.config.mjs it replaces, so the enforced rule
set is the same one ESLint applied. Where oxlint has no native rule, the
original ESLint plugin is loaded in-process through `jsPlugins`, which is
still a single pass over the tree with a single config file:
eslint-plugin-testing-library 20 rules
eslint-plugin-jest-dom 11 rules
eslint-plugin-react 7 rules, aliased to `react-js` so
it sits beside oxlint's native
`react` plugin
eslint-plugin-jest-formatting padding-around-describe-blocks
`eslint` comes back as a devDependency because those plugins import it —
eslint-plugin-react reads its package.json for a version check, and
eslint-plugin-testing-library pulls it in via @typescript-eslint/utils.
Nothing invokes the ESLint CLI and there is no ESLint config.
Two rules are deliberately not restored, because TypeScript already
reports what they caught: @babel/no-invalid-this as TS2683 under `strict`,
and import/no-unresolved as TS2307.
Checked by running both linters over a corpus of 57 single-defect files,
one per rule. Every rule ESLint caught is still caught, and oxlint
reports no false positives.
Two behavioural notes:
- react/no-did-mount-set-state and react/no-did-update-set-state were
already dead. eslint-plugin-react turns them into no-ops for any
React >= 16.3, and this project declares 18.0. They stay off.
- ESLint's no-return-await is deprecated and has no oxlint equivalent.
typescript/return-await replaces it in
`error-handling-correctness-only` mode, which reports only where
adding or removing `await` changes which errors a try/catch sees.
That is a narrower rule, and it is what found the bug fixed two
commits earlier.
The eslint-disable comments for rules loaded through jsPlugins are
renamed to the names oxlint reports them by.
jsPlugins is documented as alpha and not covered by semver, so an oxlint
upgrade may require revisiting this file. If it ever breaks, dropping the
jsPlugins block and the rules it provides leaves a working native-only
configuration.
mstange
force-pushed
the
push-yrnpkqqwltur
branch
from
October 8, 2026 19:50
bc43c93 to
c197b2c
Compare
mstange
marked this pull request as ready for review
October 9, 2026 17:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Main | Deploy preview
TypeScript 7 has a faster compiler but eslint isn't compatible with it. But we can switch to oxlint instead; oxlint has many of the lints we use built-in, and for the rest (testing-library, jest-dom) it has a
jsPluginadapter.Timings on my machine, from a cold cache:
Two notes:
error-handling-correctness-onlymode, which reports only where adding or removingawaitchanges which errors a try/catch sees. That is a narrower rule, and it is what found the bug fixed in Add missing await when calling Chrome importer #6346.The eslint-disable comments for rules loaded through jsPlugins are renamed to the oxlint names.
jsPlugins is documented as alpha and not covered by semver, so an oxlint upgrade may require revisiting this file.